package com.ruoyi.commodity.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.ruoyi.commodity.domain.Product;
import com.ruoyi.commodity.domain.vo.ProductVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 产品管理Service接口
 * 
 * @author ruoyi
 * @date 2023-09-09
 */
public interface IProductService 
{
    /**
     * 查询产品管理
     *
     * @param id 产品管理主键
     * @return 产品管理
     */
    public ProductVO selectProductById(Long id);

    /**
     * 查询产品管理列表
     *
     * @param product 产品管理
     * @return 产品管理集合
     */
    public PageInfo<ProductVO> selectProductList(ProductVO product);

    /**
     * 批量查询
     * @param ids
     * @return
     */
    public List<Product> selectProductListById(Long[] ids);

    /**
     * 新增产品管理
     * 
     * @param product 产品管理
     * @return 结果
     */
    public int insertProduct(ProductVO product);

    /**
     * 修改产品管理
     * 
     * @param product 产品管理
     * @return 结果
     */
    public int updateProduct(ProductVO product);

    /**
     * 批量删除产品管理
     * 
     * @param ids 需要删除的产品管理主键集合
     * @return 结果
     */
    public int deleteProductByIds(Long[] ids);

    /**
     * 删除产品管理信息
     * 
     * @param id 产品管理主键
     * @return 结果
     */
    public int deleteProductById(Long id);


    /**
     * 查询sku，然后生成sku规格
     * @param oemName oem的查询条件
     * @return 结果
     */
    public String productSku(String oemName);

    /**
     * 生成sku
     * @param oem
     * @return
     */
    public String skuName(Long oem);

    /**
     * 店铺商品和本地商品关联
     * @param product
     * @return
     */
    public PageInfo<Product> selectProductBrand(Product product);

    /**
     * 销售订单下的商品
     * @param product
     * @return
     */
    public List<Product> selectByPlanId(Product product, Boolean isEdit);

    /**
     * 导入产品表格数据
     * @param file
     * @return
     */
    public int importVendorExcel(MultipartFile file);
    /**
     * 停用产品管理
     * @param ids
     * @return
     */
    int disable(List<Long> ids);

    /**
     * 启用产品管理
     * @param ids
     * @return
     */
    int enable(List<Long> ids);


}
